MTT: The Maude Termination Tool (System Description)
نویسندگان
چکیده
Despite the remarkable development of the theory of termination of rewriting, its application to high-level programming languages is far from being optimal. This is due to the need for features such as conditional equations and rules, types and subtypes, (possibly programmable) strategies for controlling the execution, matching modulo axioms, and so on, that are used in many programs and tend to place such programs outside the scope of current termination tools. The operational meaning of such features is often formalized in a proof-theoretic manner by means of an inference system (see, e.g., [2, 3, 17]) rather than just by a rewriting relation. In particular, Generalized Rewrite Theories (GRT) [3] are a recent generalization of rewrite theories at the heart of the most recent formulation of Maude [4]. The corresponding termination notions can also differ from the standard ones, see [14]. For these reasons, although there is a good number of tools which can be used to automatically prove termination of rewriting (e.g., [9], [13], . . . ) they cannot directly prove termination of, e.g., Elan [1], Maude [4] or CafeOBJ [8] programs. As an illustrative example, consider the Maude module MARKS-LISTS in the MTT snapshot in Figure 1. Given a list representation of a multiset of natural numbers it (nondeterministically) computes its submultisets of size 2. A mark ‘#’ is introduced into a given List of numbers (of sort Nat) to yield a marked list of sort MList (supersort of List). The matching condition < N1 ; N2 ; N3 ; L’ > := < L > in the conditional rule ensures that ‘#’ is introduced into lists of at least three elements. Symbol # is intended to mark a number to be removed by using the third rule (thus producing a sublist of the original one). The mark is propagated inside the structure of the list until it is finally removed (together with its companion number) to produce a list of sort List on which we can restart the process. Objects from both List and MList can be built by using a single overloaded constructor _;_. Modeling MARKS-LISTS as a Conditional Term Rewriting System (CTRS, see [18]) by translating the matching condition into a rewriting condition as:
منابع مشابه
CARIBOO : A Multi-Strategy Termination Proof Tool Based on Induction
CARIBOO is a termination proof tool for rule-based programming languages, where a program is a rewrite system and query evaluation consists in rewriting a ground expression [3]. It applies to languages such as ASF+SDF, Maude, Cafe-OBJ, or ELAN. By contrast with most of the existing tools, which prove in general termination of standard rewriting (rewriting without strategy) on the free term alge...
متن کاملThe Maude Formal Tool Environment
This paper describes the main features of several tools concerned with the analysis of either Maude specifications, or of extensions of such specifications: the ITP, MTT, CRC, ChC, and SCC tools, and Real-Time Maude for real-time systems. These tools, together with Maude itself and its searching and model-checking capabilities, constitute Maude’s formal environment.
متن کاملProving Termination in the Context-Sensitive Dependency Pair Framework
Termination of context-sensitive rewriting (CSR) is an interesting problem with several applications in the fields of term rewriting and in the analysis of programming languages like CafeOBJ, Maude, OBJ, etc. The dependency pair approach, one of the most powerful techniques for proving termination of rewriting, has been adapted to be used for proving termination of CSR. The corresponding notion...
متن کاملTermination of Innermost Context-Sensitive Rewriting Using Dependency Pairs
Innermost context-sensitive rewriting has been proved useful for modeling computations of programs of algebraic languages like Maude, OBJ, etc. Furthermore, innermost termination of rewriting is often easier to prove than termination. Thus, under appropriate conditions, a useful strategy for proving termination of rewriting is trying to prove termination of innermost rewriting. This phenomenon ...
متن کاملTermination of programs with strategy annotations ∗
Strategy annotations have been used in a number of programming languages and rewriting-based systems (e.g., OBJ2, OBJ3, CafeOBJ, Maude, JITty, μCRL, . . . ) for improving the termination behavior and avoiding useless computations. Regarding the ability of these annotations to improve the termination behavior of programs, the possibility of forbidding reductions on some arguments of function sym...
متن کامل